package com.Common;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;

public class DateUtil {
    /**
     * 获取当前时间字符串
     *
     * @return
     */
    public static String getCurrentTime() {
        Date date = new Date();
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        return sdf.format(date);
    }

    /**
     * 字符串转日期
     *
     * @param strDate type 1 不带时间 2 带时间
     *
     * @return
     */
    public static Date convertStrToDate(String strDate, int type) {
        // 必须捕获异常
        try {
            // 注意：SimpleDateFormat构造函数的样式与strDate的样式必须相符
            SimpleDateFormat simpleDateFormat = null;
            if (type == 1) {
                simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
            } else {
                simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
            }

            Date date = simpleDateFormat.parse(strDate);
            return date;
        } catch (ParseException px) {
            px.printStackTrace();
        }
        return null;
    }

    /**
     * 获取格式化日期字符串
     *
     * @param type     获取日期类型 1 年月日 时分秒 2 年月日 3 时分秒
     * @param datetime
     * @return
     */
    public static String getFormatDate(int type, Date datetime) {
        String formart = "";
        if (type == 1) {
            formart = "yyyy-MM-dd HH:mm:ss";
        } else if (type == 2) {
            formart = "yyyy-MM-dd";
        } else {
            formart = "HH:mm:ss";
        }
        SimpleDateFormat sdf = new SimpleDateFormat(formart);
        String startTime = sdf.format(datetime);
        return startTime;
    }

    /**
     * 获取当前时间后第几天的时间 获取日期类型 1 年月日 时分秒 2 年月日 3 时分秒
     *
     * @param addDays
     * @param type
     * @return
     */
    public static String getAddDaysFromNow(int addDays, int type) {
        Calendar dCalendar = Calendar.getInstance();
        dCalendar.setTime(new Date());
        dCalendar.add(dCalendar.DATE, addDays);
        Date newDate = dCalendar.getTime();
        String dtTime = getFormatDate(type, newDate);
        return dtTime;
    }

    /**
     * 获取dth后几天的日期 获取日期类型 1 年月日 时分秒 2 年月日 3 时分秒
     *
     * @param addDays
     * @param type    获取日期类型 1 年月日 时分秒 2 年月日 3 时分秒
     * @param dt
     * @return
     */
    public static String getAddDaysByDate(int addDays, int type, Date dt) {
        Calendar dCalendar = Calendar.getInstance();
        dCalendar.setTime(dt);
        dCalendar.add(dCalendar.DATE, addDays);
        Date newDate = dCalendar.getTime();
        String dtTime = getFormatDate(type, newDate);
        return dtTime;
    }
}
